﻿#include "module_bass.h"



bool 播放音频::初始化(int 设备ID, DWORD 采样率, DWORD 标志, HWND 窗口句柄) {
	return BASS_Init(设备ID, 采样率, 标志, (HWND)窗口句柄, 0);
}

bool 播放音频::释放() {
	return BASS_Free();
}

int 播放音频::取错误代码() {
	return BASS_ErrorGetCode();
}


int 播放音频::置本地音频文件(wchar_t* 文件路径, int 起始位置) {
	return BASS_StreamCreateFile(FALSE, 文件路径, 起始位置, 0, 0);
}


int 播放音频::置URL音频文件(WCHAR URL地址, int 起始位置) {
	return BASS_StreamCreateURL(&URL地址, 起始位置, 0, 0, 0);
}

void 播放音频::关闭文件(int 播放句柄) {
	BASS_MusicFree(播放句柄);
	BASS_StreamFree(播放句柄);
}

bool 播放音频::播放(int 播放句柄, int 播放模式) {
	return BASS_ChannelPlay(播放句柄, 播放模式);
}

bool 播放音频::暂停(int 播放句柄) {
	return BASS_ChannelPause(播放句柄);
}

bool 播放音频::停止(int 播放句柄) {
	BASS_StreamFree(播放句柄);
	return BASS_ChannelStop(播放句柄);
}

float 播放音频::取媒体长度(int 播放句柄) {
	return BASS_ChannelBytes2Seconds(播放句柄, BASS_ChannelGetLength(播放句柄, 0));
}

int 播放音频::取音乐长度(int 播放句柄) {
	return BASS_ChannelGetLength(播放句柄, 0);
}

int 播放音频::取播放位置(int 播放句柄) {
	return BASS_ChannelGetPosition(播放句柄, 0);
}

bool 播放音频::置播放位置(int 播放句柄, int 播放位置) {
	return BASS_ChannelSetPosition(播放句柄, 播放位置, 0);
}

float 播放音频::取播放速度(int 播放句柄) {
	float 播放速度;
	BASS_ChannelGetAttribute(播放句柄, 1, &(float)播放速度);//#BASS_ATTRIB_FREQ=1
	return	播放速度;
}

bool 播放音频::置播放速度(int 播放句柄, float 播放速度) {
	默认速度 = (int)取播放速度(播放句柄);
	float 速度 = 播放速度 * 默认速度;
	return BASS_ChannelSlideAttribute(播放句柄, 1, (float)速度, 0);
}

int 播放音频::取播放状态(int 播放句柄) {
	return BASS_ChannelIsActive(播放句柄);
}

float 播放音频::取通道音量(int 播放句柄) {
	float 音量;
	BASS_ChannelGetAttribute(播放句柄, 2, &(float)音量);//#BASS_ATTRIB_VOL=2
	return 音量;
}

float 播放音频::取音量() {
	return BASS_GetVolume();
}

float 播放音频::取CPU使用率() {
	return BASS_GetCPU();
}

bool 播放音频::置音量(int 播放句柄, int 音量) {
	float 音量大小 = (float)音量 / (float)100;
	return BASS_ChannelSetAttribute(播放句柄, 2, 音量大小);//#BASS_ATTRIB_VOL= 2
}


float 播放音频::位置到时间(int 播放句柄, int 播放位置) {
	return BASS_ChannelBytes2Seconds(播放句柄, 播放位置);
}


int 播放音频::时间到位置(int 播放句柄, float 播放时间) {
	float s= BASS_ChannelSeconds2Bytes(播放句柄, 播放时间);
	return (int)s;
}